ECMAScript 2017 (ES8) হল জাভাস্ক্রিপ্টের একটি গুরুত্বপূর্ণ আপডেট যা ২০১৭ সালে প্রকাশিত হয়। ES8 পূর্ববর্তী সংস্করণগুলোর উপর ভিত্তি করে তৈরি এবং এতে কিছু নতুন বৈশিষ্ট্য এবং ফিচার যুক্ত করা হয়েছে, যা ডেভেলপারদের কোড লেখাকে আরও সহজ, কার্যকর এবং শক্তিশালী করে তোলে। ES8 এর মূল বৈশিষ্ট্যগুলির মধ্যে রয়েছে অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং সহজ করা, অবজেক্ট ম্যানিপুলেশন উন্নত করা, এবং স্ট্রিং ম্যানিপুলেশনকে আরও কার্যকর করা।
অ্যাসিঙ্ক/অ্যাওয়েট ES8 এ অ্যাসিঙ্ক্রোনাস কোড লেখার জন্য একটি সহজ এবং পাঠযোগ্য পদ্ধতি প্রদান করে। এটি প্রমিসেসের উপর ভিত্তি করে কাজ করে এবং কলব্যাক হজমের সমস্যা কমায়।
// প্রমিস ব্যবহার করে
function fetchData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Data fetched successfully!");
}, 2000);
});
}
fetchData()
.then(data => console.log(data))
.catch(error => console.error(error));
// Async/Await ব্যবহার করে
async function getData() {
try {
const data = await fetchData();
console.log(data); // আউটপুট: Data fetched successfully!
} catch (error) {
console.error(error);
}
}
getData();
ব্যাখ্যা: async
ফাংশনটি একটি প্রমিস রিটার্ন করে এবং await
কিওয়ার্ডটি প্রমিসের সমাধান পর্যন্ত অপেক্ষা করে।
bject.entries()
এবং Object.values()
Object.entries()
এবং Object.values()
মেথডগুলো অবজেক্ট থেকে কী-ভ্যালু পেয়ার এবং শুধুমাত্র ভ্যালুগুলোকে একটি অ্যারেতে রিটার্ন করে।
const person = {
name: "Alice",
age: 25,
city: "Dhaka"
};
// Object.entries()
const entries = Object.entries(person);
console.log(entries);
// আউটপুট: [["name", "Alice"], ["age", 25], ["city", "Dhaka"]]
// Object.values()
const values = Object.values(person);
console.log(values);
// আউটপুট: ["Alice", 25, "Dhaka"]
ব্যাখ্যা: Object.entries()
কীগুলো এবং তাদের সংশ্লিষ্ট মানগুলোকে একটি অ্যারে হিসেবে প্রদান করে, যেখানে প্রতিটি উপাদান একটি [কী, মান] জোড়া। Object.values()
শুধুমাত্র মানগুলোকে একটি অ্যারে হিসেবে প্রদান করে।
ES8 এ padStart()
এবং padEnd()
মেথডগুলো স্ট্রিংয়ের শুরু বা শেষে নির্দিষ্ট সংখ্যক ক্যারেক্টার যোগ করতে ব্যবহৃত হয়।
const str = "5";
// padStart()
const paddedStart = str.padStart(3, '0');
console.log(paddedStart); // আউটপুট: "005"
// padEnd()
const paddedEnd = str.padEnd(3, '0');
console.log(paddedEnd); // আউটপুট: "500"
ব্যাখ্যা: padStart(3, '0')
স্ট্রিংয়ের শুরুতে প্রয়োজনীয় সংখ্যা পর্যন্ত 0
যোগ করে স্ট্রিংকে দীর্ঘ করে তোলে। একইভাবে, padEnd(3, '0')
স্ট্রিংয়ের শেষে 0
যোগ করে।
bject.getOwnPropertyDescriptors()
Object.getOwnPropertyDescriptors()
মেথডটি একটি অবজেক্টের সকল প্রপার্টির ডেটা প্রোপার্টি ডেসক্রিপটরস (যেমন writable
, enumerable
, configurable
) রিটার্ন করে।
const person = {
name: "Alice",
age: 25
};
const descriptors = Object.getOwnPropertyDescriptors(person);
console.log(descriptors);
/*
আউটপুট:
{
name: { value: 'Alice', writable: true, enumerable: true, configurable: true },
age: { value: 25, writable: true, enumerable: true, configurable: true }
}
*/
ব্যাখ্যা: এই মেথডটি অবজেক্টের প্রপার্টিগুলোর গুণাবলী সম্পর্কে বিস্তারিত তথ্য প্রদান করে, যা অবজেক্ট ম্যানিপুলেশনে সহায়ক।
Promise.prototype.finally()
finally()
মেথডটি একটি প্রমিসের শেষে কিছু কোড চালানোর জন্য ব্যবহৃত হয়, যা প্রমিস সফল বা ব্যর্থ হোক না কেন এক্সিকিউট হয়।
function fetchData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
// resolve("Data fetched successfully!");
reject("Error fetching data!");
}, 2000);
});
}
fetchData()
.then(data => console.log(data))
.catch(error => console.error(error))
.finally(() => console.log("Operation completed."));
/*
আউটপুট:
Error fetching data!
Operation completed.
*/
ব্যাখ্যা: finally()
ব্লকটি প্রমিসের শেষে কোনওভাবেই এক্সিকিউট হয়, তাই এটি রিসোর্স ক্লিনআপ বা অন্য কোন ক্রিয়াকলাপের জন্য ব্যবহার করা যেতে পারে।
ES8 এ ফাংশনের প্যারামিটার লিস্ট এবং কলগুলিতে ট্রেইলিং কমা ব্যবহার করার সুবিধা যুক্ত করা হয়েছে, যা কোডের সংস্করণ নিয়ন্ত্রণকে সহজ করে তোলে।
function greet(
name,
age,
) {
console.log(`Hello, ${name}. You are ${age} years old.`);
}
greet("Alice", 25,);
/*
আউটপুট:
Hello, Alice. You are 25 years old.
*/
ব্যাখ্যা: ট্রেইলিং কমা ব্যবহার করলে প্যারামিটার যুক্ত বা বাদ দেওয়া সহজ হয় এবং ডিফারেন্স রেগুলার এক্সপ্রেশন এড়ানো যায়।
async
এবং await
এর উন্নতিES8 এ async
এবং await
এর সাহায্যে অ্যাসিঙ্ক্রোনাস কোড লেখা আরও সহজ এবং রিডেবল হয়েছে। এটি প্রমিসের সাথে কাজ করতে সুবিধা প্রদান করে এবং কলব্যাক হজমের সমস্যা কমায়।
async function getData() {
try {
const response = await fetch('https://api.example.com/data');
const data = await response.json();
console.log(data);
} catch (error) {
console.error("Error:", error);
}
}
getData();
ব্যাখ্যা: await
কিওয়ার্ডটি প্রমিসের সমাধান পর্যন্ত অপেক্ষা করে এবং async
ফাংশনটি একটি প্রমিস রিটার্ন করে।
Object.values()
Object.values()
মেথডটি একটি অবজেক্টের সকল ভ্যালুগুলোকে একটি অ্যারে হিসেবে রিটার্ন করে।
const person = {
name: "Alice",
age: 25,
city: "Dhaka"
};
const values = Object.values(person);
console.log(values); // আউটপুট: ["Alice", 25, "Dhaka"]
ব্যাখ্যা: Object.values()
ব্যবহার করে অবজেক্টের শুধুমাত্র মানগুলোকে একটি অ্যারে হিসেবে পাওয়া যায়, যা ডেটা ম্যানিপুলেশনে সহায়ক।
async
এবং await
এর মাধ্যমে অ্যাসিঙ্ক্রোনাস কোড লেখা আরও সহজ এবং রিডেবল হয়।Object.entries()
, Object.values()
, এবং Object.getOwnPropertyDescriptors()
মেথডগুলো অবজেক্ট ম্যানিপুলেশনকে আরও কার্যকরী করে তোলে।padStart()
এবং padEnd()
মেথডগুলো স্ট্রিংয়ের শুরু বা শেষে নির্দিষ্ট সংখ্যক ক্যারেক্টার যোগ করা সহজ করে।Promise.prototype.finally()
মেথডটি প্রমিসের শেষে কিছু কোড চালানো সহজ করে, যা কোডের রিডেবিলিটি এবং মেইনটেনেবিলিটি বাড়ায়।ECMAScript 2017 (ES8) জাভাস্ক্রিপ্টের একটি গুরুত্বপূর্ণ আপডেট যা ডেভেলপারদের জন্য অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং, অবজেক্ট এবং স্ট্রিং ম্যানিপুলেশন, এবং প্রমিস ম্যানেজমেন্টের ক্ষেত্রে নতুন এবং উন্নত ফিচার প্রদান করে। async
এবং await
এর মাধ্যমে অ্যাসিঙ্ক্রোনাস কোড লেখা সহজ হয়েছে, Object.entries()
এবং Object.values()
অবজেক্ট ম্যানিপুলেশনকে আরও কার্যকর করেছে, এবং padStart()
ও padEnd()
স্ট্রিং ম্যানিপুলেশনকে আরও সহজ করেছে। এছাড়াও, Promise.prototype.finally()
প্রমিসের শেষে নির্দিষ্ট কোড এক্সিকিউট করার সুযোগ দেয়, যা কোডের রিডেবিলিটি ও মেইনটেনেবিলিটি বাড়ায়। এই নতুন বৈশিষ্ট্যগুলো ডেভেলপারদের কোড লেখাকে আরও সংক্ষিপ্ত, পরিষ্কার এবং কার্যকরী করে তোলে, যা বড় এবং জটিল প্রজেক্টগুলিতে বিশেষভাবে উপকারী।
async
এবং await
অনুশীলন করুন: অ্যাসিঙ্ক্রোনাস কোড লেখার জন্য async
এবং await
এর ব্যবহার অনুশীলন করুন যাতে আপনি তাদের কার্যকারিতা ভালোভাবে বুঝতে পারেন।Object.entries()
, Object.values()
, এবং Object.getOwnPropertyDescriptors()
মেথডগুলো ব্যবহার করে অবজেক্ট ম্যানিপুলেশন অনুশীলন করুন।padStart()
এবং padEnd()
মেথডগুলো ব্যবহার করে বিভিন্ন উদাহরণ তৈরি করুন।Promise.prototype.finally()
মেথড ব্যবহার করে প্রমিসের শেষে কিছু কোড এক্সিকিউট করার বিভিন্ন পরিস্থিতি অনুশীলন করুন।ES8 এর নতুন বৈশিষ্ট্যগুলো শিখে এবং প্রয়োগ করে আপনি আপনার জাভাস্ক্রিপ্ট প্রোগ্রামিং দক্ষতাকে আরও উন্নত এবং কার্যকরী করতে পারবেন, যা আপনার কোডকে আরও নির্ভরযোগ্য এবং শক্তিশালী করে তুলবে।
Read more